package com.youdianstar.app.entity


/**
 * File: RewardValueEx
 * Author: Administrator Create: 2025/1/20 0020 14:20
 * Changes (from 2025/1/20 0020)
 * --------------------------------------------------
 * description:
 * ---------------------------------------------------
 *
 */

data class PointLan(
    val en:String,
    val zh:String,
    val es:String
)

data class PointAccount(val point : Int)

/**
 * 积分配置规则
 */
data class PointPlan(
    val title: PointLan,
    val description: PointLan,
    //积分数量
    val point: Int,
    //状态:1-上架（有效时间） 2-永久上架 3-下架
    val state: Int,
    //类型:1-新用户注册 2-每日访问APP 3-租借 4-绑卡 5-报失
    val type: Int,
    //标记 事件可执行
    var actionState:Boolean = true
)

/**
 * 积分记录
 */
data class PointRecord(
    val id: Int,
    val createTime: Long?,
    //标题
    val title: PointLan?=null,
    //描述
    val description: PointLan?=null,
    //积分数
    val point: Int,
    //变更后的积分数
    val currentPoint: Int,
    //优惠券信息
    val couponInfo: CouponRes?=null,
    //1-新用户注册 2-每日访问APP 3-租借 4-绑卡 5-报失 6-邀请 7-兑换优惠券 8-兑换礼物
    val type: Int
)

/**
 * 积分事件记录
 */
data class PointDbResult(
    val id: Int,
    val type:Int
)

/**
 * 优惠券折扣内容
 */
data class CouponDeduct(
    //抵扣类型：1-免费时长 2-优惠金额 3-金额折扣
    val type: Int,
    //type1-免费时长 Value
    val type1FreeDurationVal: Int,
    //type1-免费时长单位:1-分钟 2-小时
    val type1FreeDurationUnit: Int,
    //type1-优惠条件:1-最少租用时间 2-不限制
    val type1DiscountCondition: Int,
    //type1-最少租用时间 Value
    val type1MinRentalTime:Int,
    //type1-最少租用时间单位:1-分钟 2-小时
    val type1MinRentalTimeUnit:Int,

    //type2-优惠金额
    val type2DiscountAmount: Double,
    //type2-优惠条件:1-最低租金金额 2-不限制
    val type2DiscountCondition: Int,
    //type2-最低租金金额
    val type2MinRentalAmount: Double,

    //type3-租金折扣(30.1 -> 30.1%)
    val type3DiscountAmount: Double,
    //type3-优惠条件:1-最低租金金额 2-不限制
    val type3DiscountCondition: Int,
    //type3-最低租金金额
    val type3MinRentalAmount: Double
){
    fun type3DiscountNum():String{
        return type3DiscountAmount.toInt().toString()
    }
}


//优惠券信息: 优惠券中心(可兑换)
data class CouponInfo(
    val id: Int,
    //抵扣类型：1-免费时长 2-优惠金额 3-金额折扣
    val deductionType: Int,
    val deduction:CouponDeduct? =null,
    //优惠券名称
    val title: String,
    //描述
    val description: PointLan?=null,
    //商家优惠券--商家id(复数)
    val merchantIdList: String,
    //商家优惠券--商家名称(复数)
    val merchantNameList: String,
    //有效起始时间
    val startTime: Long?=null,
    //有效结束时间
    val endTime: Long?=null,
    //有效天数，领取后生效
    val exchangeEffectiveDays:Int?=null,

    //积分兑换额度(兑换上限?)
    val point: Int,
    //兑换积分(兑换数量)
    val exchangePoint: Int,

    //已兑换数量
    val redeemedNum: Int,
    //兑换率 (小数)
    val redeemedRate:Float,

    //库存数量，为0表示不可兑换
    val stockNum: Int,
    //库存类型：1.设置数量 2.无限制
    val stockType: Int,

    //每人使用限制
    val usageLimit: Int,
    //使用方式：1.自动扣除 2.手动选择
    val usageMethod: Int,
    //..............................

    //用户优惠券表id (被用户领取)
    val userCouponId: Int?=null,

    //类型 :0-通用优惠券 1-商家优惠券 ;适配用
    var dataType:Int?=null,
    //是否展开 ;适配用
    var isExp:Boolean = false
)

//我的优惠券, 可使用优惠券,记录(邀请记录/积分记录/流水使用记录/订单使用记录); 优惠码
data class CouponRes(
    val id: Int,
    //优惠券id/优惠码id
    val couponId: Int,
    //适用类型：0.所有商家 1.指定商家
    val applyType: Int,
    //抵扣类型：1-免费时长 2-优惠金额 3-金额折扣
    val deductionType: Int,
    val deduction:CouponDeduct? =null,
    //优惠券名称
    val title: String,
    //优惠券描述
    val description:PointLan?=null,
    //优惠券样式图片地址
    val image:String?=null,
    //商家优惠券--商家id(复数)
    val merchantIdList: String,
    //商家优惠券--商家名称(复数)
    val merchantNameList: String,
    //优惠金额
    val offerAmount: Double,

    val startTime: Long?=null,
    val endTime: Long?=null,
    //有效天数，领取后生效
    val exchangeEffectiveDays:Int?=null,
    //状态：1-未使用 2-已使用 3-已过期
    val state: Int,

    /**
     * 数据类型 适配用:
     * 优惠券列表 : 0-Coupon 1-Promo code ;
     *
     */
    var dataType :Int = 0,
    //是否展开: 适配用
    var isExp:Boolean = false
)

/**
 * 兑换优惠码结果
 */
data class RedeemResult(
    val id: Int,
    /*抵扣类型：1-金额 2-时间 3-折扣 4-优惠券*/
    val deductionType:Int,
    val promoCodeTitle: String?,
    val promoCode: String?,
    val startTime: Long?,
    val endTime: Long?,
    val userCoupon: CouponRes?
) {
    /**
     * {"code":"0",
     *  "data":{
     *          "id":10,
     *          "promoCodeTitle":
     *          "Promo 4",
     *          "promoCode":"W4O2VI6W",
     *          "deductionType":1,
     *          "startTime":1646299794330,
     *          "endTime":1646731794330,
     *          "userCoupon":null
     *          },
     *  "message":"S-Success(0)"
     * }
     */
}

/**
 * 优惠码记录
 */
data class PromoRecord(
    val id: Int,
    val createTime: Long?,
    val startTime: Long?,
    val endTime: Long?,
    //优惠码名称
    val promoCodeTitle: String,
    //优惠码
    val promoCode: String,
    //优惠券名称
    val couponTitle: String,
    //订单号
    val orderNo: String?=null,
    //1-未使用 2-已使用 3-已过期
    val state: Int
)

data class InviteInfo(
    val inviteeNum:Int = 0,
    val rewardList:List<InviteRule>,
)

/**邀请规则*/
data class InviteRule(
    val id:Int,
    //奖励类型：1-积分 2-优惠券 3-余额，逗号分割
    val type:String,
    val createTime:Long,

    //规则描述
    val description:String?=null,
    //奖励金额
    val amount:Double,
    //奖励的优惠券id
    val couponId:Int?=null,
    val couponTitle:String?=null,
    val couponInfo:CouponInfo?=null,
    //奖励的优惠券数量
    val quantity:Int=0,
    //奖励积分
    val point:Int,
    //被邀请人数(上限)
    val inviteeNum:Int,
){

}

/**邀请记录*/
data class InviteRc(
    val id:Int,
    val createTime:Long,
    //邀请账号
    val account:String?=null,
    //奖励类型：1-积分 2-优惠券 3-余额
    val type:Int,
    //奖励金额
    val amount:Double,
    //奖励的优惠券 (0614,暂时只显示一个Coupon 文本,不解析优惠券信息)
    val couponTitle:String?=null,
//    val couponInfo: CouponRes?=null,
    //奖励的优惠券数量
    val quantity:Int?=null,
    //奖励积分
    val point:Int
)

